/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86136
 * Date: 2024-05-12
 * Time: 15:21
 */
public class Test {
    public static void main(String[] args) {
        /*
        增量运算符：+= -= *= /= %/
        只有变量可以使用该运算符
         */
        int a = 10;
        a += 5;
        System.out.println(a);
        a -= 10;
        System.out.println(a);
        a *= 2;
        System.out.println(a);
        a /= 4;
        System.out.println(a);
        a %= 3;
        System.out.println(a);
    }
    public static void main15(String[] args) {
        /*
        算术操作符：+ - * / %
        双目运算符都需要两个操作数
         */
        int a = 2;
        int b = 3;
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(b/a);
        System.out.println(b%a);

        double c = 3.5;
        double d = 1.5;
        System.out.println(c%d);
        System.out.println(c/d);

        //整型a会先类型提升为double，再进行运算
        System.out.println(c/a);
        System.out.println(c%a);
    }
    public static void main14(String[] args) {
        /*
        int --> String
         */
        int a = 10;
        String str = String.valueOf(a);
        System.out.println(str);
        String str2 = a+"";
        System.out.println(str2);

        /*
        String(数字字符串) --> int
         */
        String str3 = "123";
        int b = Integer.valueOf(str3);
        System.out.println(b);
        int c = Integer.parseInt(str3);
        System.out.println(c);

    }
    public static void main13(String[] args) {
       /*
       整型提升：对于不同类型的数据类型混合运算，范围小的会提升成范围大的
               对应short、byte这种比4字节小的类型，会先提升成4个字节的int，再进行运算
        */
        byte a = 10;
        byte b = 20;
//        byte c = a + b;//err-->会先将+号两边的变量类型提升为整型再进行赋值
        byte c = (byte) (a + b);
        System.out.println(c);
    }
    public static void main12(String[] args) {
        String str = "hello ";
        String str1 = "world";
        System.out.println(str + str1);
        System.out.println(str.length());//计算str的长度
        System.out.println(str.charAt(0));//查找下标为0的字符
        int a = 10;
        int b = 20;
        System.out.println(a+ "");//字符串"10"
        System.out.println("a == "+a);
        System.out.println("c ==" + a + b);
        System.out.println(a+b +" = a + b");
    }
    public static void main11(String[] args) {
        /*
        类型转换-->自动类型转换（隐式） 强制类型转换（显式）
         */
        int a = 1;
        byte b = 127;
        a += b;//自动类型转换
//        sh = a;//编译失败
        b = (byte)a;//强制类型转换
        System.out.println(b);//-128
    }
    public static void main10(String[] args) {
        /*
        布尔类型 boolean
        取值：true -- false
         */
        boolean a = true;
        System.out.println(a);
    }
    public static void main9(String[] args) {
        /*
        字符型 char 2字节 --> unicode字符集
        包装类：Character
         */
        char a = 'a';
        char a1 = 'A';
        char b = '陈';
        char c = '1';
        System.out.println(a);
        System.out.println(a1);
        System.out.println(b);
        System.out.println(c);
    }
    public static void main8(String[] args) {
        /*
        单精度 float 4字节
        包装类：Float
         */
//        float f = 10.1;//err-->必须加上F/f表示是float型,idea默认为double
        //此时会把10.1认为是double类型
        float f = 10.1F;
        System.out.println(f);
    }
    public static void main7(String[] args) {
        /*
        双精度 double 8字节
        包装类：Double
         */
        double a = 1.1F;
        System.out.println(a * a);//不能精确表示
        double b = 3;
        double c = 2;
        System.out.println(c/b);

    }
    public static void main6(String[] args) {
        /*
        字节型 byte 1字节
        包装类：Byte
        127 -- 2^7-1
        -128 -- 2^7
         */
        byte a = 10;
        System.out.println(a);
        System.out.println(Byte.MAX_VALUE);
        System.out.println(Byte.MIN_VALUE);
    }
    public static void main5(String[] args) {
        /*
        短整型 short 2字节
        包装类：Short
        32767 -- 2^15-1
        -32768 -- 2^15
         */
        short a = 10;
        System.out.println(a);
        System.out.println(Short.MAX_VALUE);
        System.out.println(Short.MIN_VALUE);
    }
    public static void main4(String[] args) {
        /*
        长整型 long 8字节
        包装类：Long
        9223372036854775807 -- 2^63-1
        -9223372036854775808 -- 2^63
         */
        long a = 10;
        System.out.println(a);
        System.out.println(Long.MAX_VALUE);
        System.out.println(Long.MIN_VALUE);

    }
    public static void main3(String[] args) {
        /*
        整型 int 4字节
        包装类：Integer
        2147483647 -- 2^31-1
        -2147483648 -- -2^31
         */
        int a = 10;
        System.out.println(a);
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
    }
    public static void main2(String[] args) {
        int a =10;
        //const--c -->final--java
        final int b = 10;
//        b = a;//err
    }
    public static void main1(String[] args) {
//        字面常量
//        字符串常量
        System.out.println("hello world");
//        整型常量
        System.out.println(100);
//        浮点数常量
        System.out.println(3.14);
//        字符常量
        System.out.println('a');
        System.out.println('陈');
//        布尔常量
        System.out.println(true);
        System.out.println(false);
//       空常量：null(后面讲)
    }
}
